package com.kakame.codenews.front.user.controller;

import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.kakame.codenews.base.constant.SystemConstant;
import com.kakame.codenews.base.util.SessionUtil;
import com.kakame.codenews.base.util.SystemUtil;
import com.kakame.codenews.base.web.controller.BaseController;
import com.kakame.codenews.base.web.entity.Page;
import com.kakame.codenews.base.web.entity.Result;
import com.kakame.codenews.base.web.fast.mapping.common.User;
import com.kakame.codenews.base.web.fast.mapping.nexus.ArticleComment;
import com.kakame.codenews.front.message.service.FrontMessageService;
import com.kakame.codenews.front.user.service.FrontUserService;

/**
 * <pre>
 * <b>desc:</b> 前台用户相关控制器 
 * <b>auth:</b> ex-hejm
 * <b>date:</b> 2018年7月12日 下午1:12:39
 * </pre>
 */
@Controller
@RequestMapping("/front/user")
public class FrontUserController extends BaseController {

    @Resource
    private FrontUserService userService;
    @Resource
    private FrontMessageService messageService;
    
    /**
     * <pre>
     * <b>desc:</b> 用户个人中心 -个人资料
     * <b>auth:</b> ex-hejm
     * <b>date:</b> 2018年7月12日 下午1:16:01
     * </pre>
     * @param userId
     * @param map
     * @return
     */
    @RequestMapping("/datum")
    public String datum(ModelMap map) {
        return "front/user/datum";
    }
    
    /**
     * 用户头像设置
     * @author 何家明 2018年7月13日 下午11:24:11
     * @param map
     * @return
     */
    @RequestMapping("/icon")
    public String icon(ModelMap map) {
        return "front/user/icon";
    }
    
    /**
     * 我的消息
     * @author 何家明 2018年7月13日 下午11:24:11
     * @param map
     * @return
     */
    @RequestMapping("/message")
    public String message(ModelMap map) {
        return "front/user/message";
    }
    
    /**
     * <pre>
     * <b>desc:</b> 用户消息分页列表 
     * <b>auth:</b> ex-hejm
     * <b>date:</b> 2018年8月10日 下午3:29:50
     * </pre>
     * @param json
     * @param session
     * @return
     */
    @RequestMapping("/message/grid")
    @ResponseBody
    public Result messageGrid(@RequestBody String json, HttpSession session) {
        Result result = null;
        
        Map<String, Object> queryMap = convertJsonToObject(json);
        
        queryMap.put("userId", SessionUtil.getCurrentUserId(session));
        
        try {
            Page<ArticleComment> messages = messageService.messageGrid(queryMap);
            result = Result.create().setMsg("获取数据成功").setStatus(SystemConstant.SUCCESS).setObject(messages).build();
        } catch(Exception e) {
            e.printStackTrace();
            result = Result.create().setMsg("获取数据失败：" + e.getMessage()).setStatus(SystemConstant.ERROR).build();
        }
        return result;
    }
    
    @RequestMapping("/update")
    public String update(User user, HttpSession session, ModelMap map) {
        String currentUserId = SessionUtil.getCurrentUserId(session);
        user.setId(currentUserId);
        user.setUpdateUserId(currentUserId);
        int row = userService.update(user);
        if(row == 1) {
            SystemUtil.reloadObject(SessionUtil.getCurrentUser(session), user, true);
        }
        return "redirect:datum.html";
    }
}
